// 分类的CRUD操作
const router = require('koa-router')()
let product = require('../db/Product')

let item = product.productItem
let content = product.product

// 获取当前分类
router.post('/item', async (ctx, next) => {
  await
  // 获取所有分类
  item.find({ deep: 1 }, { name: 1, child: 1, desc: 1})
    .populate('child', { name: 1 })
    .exec((err, doc) => {
    ctx.body = err || doc
      // if (!err && doc.length > 0) {
      //   let res = []
      //   // 查询商品数
      //   doc.forEach((x) => {
      //     content.count({ item: x._id, state: 200 }, (err, count) => {
      //       if (!err) {
      //         x.count = count
      //         res.push(x)
      //       }
      //     })
      //   })
      //   // ctx.body = res
      // }
    })
})

// 创建新分类 <---> 传递父级分类过来， 修改父级分类添加当前项为子级分类
  .get('/item', async (ctx, next) => {
    let data = ctx.request.query.item
    await
    item.create(data, (err, doc) => {
      console.log(err || doc)
      // 插入成功
    if (!err) {
        ctx.body = doc
    //   if (data.parent) {
    //     item.update({ _id: data.parent }, { $push: { child: doc._id  } }, (err, doc) => {
    //       if (!err) {
    //         ctx.body = doc
    //       }
    //     })
    //   } else {
    //     ctx.body = doc
    //   }
    // } else {
    //   ctx.body = {
    //     code: 500,
    //     err: err,
    //   }
    }
  })
})


// 更新分类,时间关系，这里只更新描述，名称，不提供层级更改功能
.put('/item', async (ctx, next) => {
    let data = ctx.request.body.item
    await
    item.update({ _id: item._id }, item)
    .exec((err, doc) => {
      if (!err && nModified === 1) {
        // success
      }
    })
})

// 删除分类，首先查找是否还有商品
.delete('/item', async (ctx, next) => {
    let data = ctx.request.body.item
    // 是否有子级分类
    await
    item.findById(data, (err, doc) => {
    if (!err && doc.child.length > 0) {
      // 不能删除，有子级分类
    } else if (!err) {
      content.count({ item: data._id }, (err, count) => {
        if (!err && count > 0) {
          // 不能删除
        } else if (!err && count === 0) {
          item.remove({ _id: data._id }, (err, doc) => {
            if (!err && doc) {
              // 删除成功
            }
          })
        }
      })
    } else {
      // error
    }
  })

})

module.exports = router
